package 二分;

public class lc153 {

	public static void main(String []args) {
//		int nums[] = {3,4,5,1,2};
		int nums [] = {1,3,3,3};
		System.out.println(solution(nums));
	}
	
	
    public int findMin(int[] nums) {
        // 排序的代价时    nlg(n)
    	// Arrays.sort(nums);
        // return nums[0];
    	
    	
    	
    	// 下面的代码时 O(n)
        int len = nums.length;
        for(int i = 1 ;i < nums.length - 1 ;i++){
            if(nums[i] < nums[i -1] && nums[i] < nums[i + 1])
                return nums[i];
        }
        return nums[0] > nums[len -1] ? nums[len - 1] : nums[0];
    }
    
    /**
     * 这个题的**细节**真的超多的
     */
    public static int solution(int nums[]) {
    	int len = nums.length;
    	int l = 0;
    	int r = len -1;
    	while(l < r) {
    		int mid =  l + r >> 1;
    		if(nums[mid] > nums[r])
    			l = mid + 1;
    		else
    			r = mid;
    	}
    	return nums[l];
//    	return nums[l - 1];
    }
    
    
}
